#ifndef LEPTJSON_H__
#define LEPTJSON_H__

typedef enum { LEPT_NULL, LEPT_FALSE, LEPT_TRUE, LEPT_NUMBER, LEPT_STRING, LEPT_ARRAY, LEPT_OBJECT } lept_type;
  /* LEPT_NULL=0, LEPT_FALSE=1, LEPT_TRUE=2, LEPT_NUMBER=3, LEPT_STRING=4, LEPT_ARRAY=5, LEPT_OBJECT=6，lept_type是枚举类名*/
typedef struct {
    lept_type type;/*枚举对象 type type为枚举类七个值中的一个*/
}lept_value;/*json树的结点*/

enum { /*存储着解析过程的正确以及错误结果的代码*/
    LEPT_PARSE_OK = 0,/*解析成功*/
    LEPT_PARSE_EXPECT_VALUE,/*传入的json文本只含有空白*/
    LEPT_PARSE_INVALID_VALUE,/*传入的json文本与lept_value不匹配*/
    LEPT_PARSE_ROOT_NOT_SINGULAR/*传入的json文本有多个字符*/
};

int lept_parse(lept_value* v, const char* json);/*解析json文本，传入了一个根结点指针和一个json文本的字符串，返回值是上述枚举类内的四个值之一，表示解析后的不同状态*/

lept_type lept_get_type(const lept_value* v);/*解析json文本的类型，返回值为枚举类lept_type内的七个值，其实返回值写成int也是可以的，因为lept_type内的值都宏定义为了int型*/

#endif /* LEPTJSON_H__ */
